from django.db import models

from users.models import User


class Tag(models.Model):

    """ Тег для метки какого то материала """

    title = models.CharField(max_length=250)
    description = models.TextField()
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-created']

    def __str__(self):
        return self.title


class Content(models.Model):

    """ Контент, который может быть добавлен пользователем (картинки, видео и т.д.) """

    user = models.ForeignKey(User, on_delete=models.CASCADE,
                             related_name='%(class)s_related', verbose_name='Содержимое')
    tags = models.ManyToManyField(Tag, related_name='%(class)s_related')
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    title = models.CharField(max_length=250, unique=True)
    description = models.TextField(blank=True)

    class Meta:
        abstract = True
        ordering = ['-created']

    def __str__(self):
        return self.title


class Video(Content):

    """ Видео пользователя """

    url = models.URLField(verbose_name='Видео')

    class Meta:
        verbose_name = 'Видео'
        verbose_name_plural = 'Видео'


class Image(Content):

    """ Изображение пользователя """

    photo = models.ImageField(upload_to="%Y/%m/%d/")

    class Meta:
        verbose_name = 'Изображение'
        verbose_name_plural = 'Изображения'


class Article(Content):

    """ Какие-то статьи написанные пользователем """

    class Meta:
        verbose_name = 'Статья'
        verbose_name_plural = 'Статьи'


class Phrase(Content):

    """ Какие-то фразы добавленные пользователем """

    class Meta:
        verbose_name = 'Фраза'
        verbose_name_plural = 'Фразы'


class Word(Content):

    """ Какие-то слова добавленные пользователем """

    class Meta:
        verbose_name = 'Слово'
        verbose_name_plural = 'Слова'
